package com.jzo2o.foundations.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jzo2o.api.foundations.dto.response.ServeAggregationResDTO;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.foundations.model.domain.Serve;
import com.jzo2o.foundations.model.domain.ServeSearch;
import com.jzo2o.foundations.model.dto.request.ServePageQueryReqDTO;
import com.jzo2o.foundations.model.dto.request.ServeUpsertReqDTO;
import com.jzo2o.foundations.model.dto.response.*;

import java.math.BigDecimal;
import java.util.List;

/**
 * \* User: chy
 * \* Date: 2025/9/24   15:13
 * \* Description:
 * \
 */
public interface IRegionServeService   extends IService<Serve> {
    /**
     * 区域服务分页查询
     *
     * @param reqDTO
     * @return
     */
    PageResult<ServeResDTO> queryRegionServePage(ServePageQueryReqDTO reqDTO);
    /**
     * 批量新增区域服务
     *
     * @param resDTO
     */
    void batchAddRegionServe(List<ServeUpsertReqDTO> resDTO);
    /**
     * 根据serveId修改价格
     *
     * @param id
     * @param price
     */
    void updateServePrice(Long id, BigDecimal price);
    /**
     * 上架服务
     *
     * @param id
     */
    void onSaleSaleStatus(Long id);
    /**
     * 下架服务
     *
     * @param id
     */
    void offSaleSaleStatus(Long id);
    /**
     * 更新服务为热门服务
     *
     * @param id
     */
    void updateOnHot(Long id);
    /**
     * 更新服务为冷门服务
     *
     * @param id
     */
    void updateOffHot(Long id);
    /**
     * 根据regionId和saleStatus查询服务数量
     *
     * @param id
     * @param status
     * @return
     */
    int queryServeCountByRegionIdAndSaleStatus(Long id, int status);
    /**
     * 小程序端首页服务列表
     *
     * @param regionId 区域id
     * @return 首页服务列表
     */
    List<ServeCategoryResDTO> queryCategoryList(Long regionId);
    /**
     * 小程序端首页热门服务列表
     *
     * @param regionId 区域id
     * @return 首页服务列表
     */
    List<HotServeListResDTO> queryHotServeList(Long regionId);
    /**
     * 小程序端服务类型列表
     *
     * @param regionId 区域id
     * @return 服务类型列表
     */
    List<ServeAggregationTypeSimpleResDTO> getAllTypeByRegionId(Long regionId);
    /**
     * 小程序端服务详情
     *
     * @param id 服务id
     * @return 服务详情
     */
    ServeAggregationSimpleResDTO queryServeDetail(Long id);

    /**
     * 根据服务id查询服务信息
     *
     * 用于添加到es中用
     * @param serveId 服务id
     * @return 服务信息
     */
    ServeSearch getServeSearchByServeId(Long serveId);
    /**
     * 根据服务id查询服务详情   这个接口主要给订单服务使用
     * @param id
     * @return
     */
    ServeAggregationResDTO queryServeById(Long id);
}
